package day15;

// 模板模式
public class Demo02 {
	public static void main(String[] args) {

		// 当某个方法执行时, 统计方法执行消耗的时间
		showTime(new DoSome() {
			@Override
			public void doSome() {
				test02();
			}
		});
	}

	// 模板方法: 方法中有部分代码不确定
	// 通过某个接口类型的参数传递进方法
	// 从而实现通过接口中的方法将某段代码携带进方法中
	// 该方法称为"模板方法"
	// 该方法参数中使用的接口, 称为"回调接口"
	// 回调接口中的抽象方法称为"回调方法"
	// 整个处理思想就是模板模式设计思想
	public static void showTime(DoSome some) {
		// 在方法执行之前, 获取当前系统时间
		long start = System.currentTimeMillis();

		// 方法中遇到了不确定的代码
		some.doSome();

		// 在方法执行之后, 获取当前系统时间
		long end = System.currentTimeMillis();
		// 用之后的时间减之前的时间得到时间差, 就是方法执行消耗的时间
		System.out.println(end - start);
	}

	public static void test01() {
		for (int i = 0; i < 100; i++) {
			System.out.println(i);
		}
	}

	public static void test02() {
		for (int i = 0; i < 200; i++) {
			System.out.println(i);
		}
	}

}

interface DoSome {
	public void doSome();
}